#ifndef AABB_H_
#define AABB_H_

#include "constants.h"
#include "Point.h"

class AABB
{
public:
	AABB(const SPoint& mn, const SPoint& mx) : min(mn), max(mx) {}
	AABB(const AABB& copy) : min(copy.min), max(copy.max) {}
	~AABB() {}
	
	const SPoint& getMin(void) const { return min; }
	const SPoint& getMax(void) const { return max; }
	
	float getHullSize(void) const;
	
	float getLeftHullSize(const float split, const int axis) const;
	float getRightHullSize(const float split, const int axis) const;
	
	int getMaxAxis(void) const;
	
	AABB createLeft(const float split, const int axis) const;
	AABB createRight(const float split, const int axis) const;
protected:
	const SPoint min;
	const SPoint max;
private:
};

#endif /*AABB_H_*/
